package arm.common.manager;

import arm.common.entity.IBaseEntity;
import arm.db.tools.DBManager;

import java.util.List;

public class TableManager<T extends IBaseEntity>
{
    private List<T> objList;
    private Long selectedId;
    private Class<T> cl;

    public TableManager(Class<T> cl)
    {
        this.cl = cl;
    }

    public List<T> getList()
    {
        return objList;
    }

    public void readFromDB() {
        objList = DBManager.readList(getCl().getName());
    }

    public Class<T> getCl() {
        return cl;
    }

    public void setCl(Class<T> cl) {
        this.cl = cl;
    }

    public Long getSelectedId() {
        return selectedId;
    }

    public void setSelectedId(Long selectedId) {
        this.selectedId = selectedId;
    }

    /**
     * Получение значения
     * @return css класс для отображения
     * выделенных или не выделенных строк в таблице
     */
    public String getRowClasses()
    {
        String res = "";
        int i = 0;
        for (IBaseEntity o : getList())
        {
            if (o.getId().equals(getSelectedId()))
                res += getSelectedRowClass(o);
            else
                res += getUnSelectedRowClass(o);
            res += ", ";
        }
        return res;
    }

    /**
     * Получение значения
     * @return css класс для отображения
     * выделенной строки в таблице
     */
    protected String getSelectedRowClass(Object o)
    {
        return "row_selected";
    }

    /**
     * Получение значения
     * @return css класс для отображения
     * не выделенной строки в таблице
     */
    protected String getUnSelectedRowClass(Object o)
    {
        return "row_unselected";
    }

    public T getSelectedObj()
    {
        return DBManager.find(getCl(), getSelectedId());
    }

    public Boolean getSelected()
    {
        return getSelectedId() != null;
    }

}
